package org.point.common.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 封装分页信息
 * 
 * @author Szqiu
 *
 * @param <T>
 */
public class DoPage<T> {

	// 总记录数
	private Integer totalRecords = 0;
	// 总页数
	private Integer totalPage = 1;
	// 每页显示记录数
	private Integer pageSize = 5;

	// 上一页
	private Integer priverousPage = 1;
	// 当前页
	private Integer currentPage = 1;
	// 下一页
	private Integer nextPage = 1;

	// 首页
	private Integer TopPage = 1;
	// 尾页
	private Integer BottomPage = 1;
	

	// 查询参数
	private Map<String, Object> map = new HashMap<String, Object>();

	// 排序字段
	private String orderColumn;
	// 排序逻辑
	private String orderTurn = "ASC";

	// 存储结果集
	private List<T> list;

	/**
	 * 获取结果集
	 * 
	 * @return
	 */
	public List<T> getList() {
		return list;
	}

	/**
	 * 存储结果集
	 * 
	 * @param list
	 */
	public void setList(List<T> list) {
		this.list = list;
	}

	/**
	 * 获取总记录数
	 * 
	 * @return
	 */
	public Integer getTotalRecords() {
		return totalRecords;
	}

	/**
	 * 设置总记录数
	 * 
	 * @param totalRecords
	 */
	public void setTotalRecords(Integer totalRecords) {
		this.totalRecords = totalRecords;
	}

	/**
	 * 获取总页数
	 * 
	 * @return
	 */
	public Integer getTotalPage() {
		// 判断当前总记录数是否小于当前页的显示数； 大于：总记录/每页显示数； 小于： 1；
		if (this.pageSize < this.totalRecords)
			return this.totalRecords / this.pageSize + 1;
		else
			return 1;
	}

	/**
	 * 获取当前页显示记录数
	 * 
	 * @return
	 */
	public Integer getPageSize() {
		return pageSize;
	}

	/**
	 * 设置当前页显示记录数
	 * 
	 * @param pageSize
	 */
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	/**
	 * 获取上一页
	 * 
	 * @return
	 */
	public Integer getPriverousPage() {
		// 设置上一页；判断当前页是否小于1；大于：当前页-1；小于：1
		if (this.currentPage > 1)
			return this.currentPage - 1;
		else
			return 1;
	}

	/**
	 * 获取当前页
	 * 
	 * @return
	 */
	public Integer getCurrentPage() {
		return currentPage;
	}

	/**
	 * 设置当前页
	 * 
	 * @param currentPage
	 */
	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}

	/**
	 * 获取下一页
	 * 
	 * @return
	 */
	public Integer getNextPage() {
		// 设置下一页；判断当前页是否小于总页数； 大于：当前页+1； 小于 ： 1；
		if (this.currentPage < getBottomPage())
			return this.currentPage + 1;
		else
			return 0;
	}

	/**
	 * 获取首页
	 * 
	 * @return
	 */
	public Integer getTopPage() {
		return 1;
	}

	/**
	 * 获取尾页
	 * 
	 * @return
	 */
	public Integer getBottomPage() {
		if (this.totalRecords % this.pageSize > 0)
			return this.totalRecords / this.pageSize + 1;
		else
			return this.totalRecords / this.pageSize;
	}

	/**
	 * 当前页首条记录
	 * 
	 * @return
	 */
	public Integer getFirstRecord() {
		if (this.currentPage > 1)
			return this.pageSize * (this.currentPage - 1);
		else
			return 0;
	}

	/**
	 * 当前页最后记录
	 * 
	 * @return
	 */
	public Integer getLastRecord() {

		return (this.pageSize) * this.currentPage;
	}

	public Map<String, Object> getMap() {
		return map;
	}

	public void setMap(Map<String, Object> map) {
		this.map = map;
	}

	public String getOrderColumn() {
		return orderColumn;
	}

	public void setOrderColumn(String orderColumn) {
		this.orderColumn = orderColumn;
	}

	public String getOrderTurn() {
		return orderTurn;
	}

	public void setOrderTurn(String orderTurn) {
		this.orderTurn = orderTurn;
	}

}
